home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Light ROM 1
/
LIGHT-ROM 1 (Amiga Library Services)(1994).iso
/
ffdisks
/
d961.lha
/
MPMaster
/
Espa�Ðl
/
MPMaster.DOC
< prev
next >
Wrap
Text File
|
1993-11-30
|
22KB
|
442 lines
MIDI Packet Master © 1993 WareSoft Todos los derechos reservados
Programado por Antonio J. Pomar Rosselló
DISTRIBUCION
Este programa es FreeWare. Esto significa que el programa puede circular
libremente siempre que se incluyan todos los ficheros asociados al programa.
Está prohibido utilizar el programa para fines comerciales, o sea que solo se
pueden cargar los gastos normales de copia y envio que se cargan habitualmente
en las librerias de Dominio Público.
El paquete completo de distribución en castellano comprende:
MPMaster Este es el programa ejecutable.
MPMaster.DOC Es el fichero que estás leyendo ahora.
MPMaster.HISTORIA Explica las versiones que han aparecido hasta
la fecha de distribución del paquete.
MPMaster.ESQUEMA Esquema de un interface MIDI de bajo costo.
El autor del programa no acepta ninguna responsabilidad sobre cualquier
perjuicio que puede suponer el uso o abuso del programa, ni ofrece ninguna
garantia sobre el programa y sus capacidades. Tampoco se garantiza nada sobre
la precisión o estilo literario de este documento ni se acepta ninguna
responsabilidad sobre las consecuencias que puede acarrear su lectura.
Se reconocen todas las marcas registradas, marcas comerciales y Copyrights
de los productos mencionados en este documento.
Junto con el programa se incluye el esquema de un interface MIDI barato y
que funciona desde hace más de 6 años (realizado originalmente para un
secuenciador MIDI que programé en ensamblador para el Spectrum +3). El
interface es muy pequeño, tiene aislamiento por optoacoplador e icorpora una
entrada y una salida. No acepto ninguna responsabilidad sobre las consecuencias
del montaje y uso del interface MIDI. Por otro lado hay en estos momentos 3
interfaces como el del esquema ya montados y que funcionan sin problemas. El
circuito no necesita placa de circuito impreso ya que es tan sencillo que
cabe en la caja del conector de 25 patillas que va al port serie (cuando lo
diseñé para el Spectrum +3 conseguí meter todo el interface en la caja de un
conector de 9 patillas).
Queda prohibido el uso del esquema del interface MIDI para usos comerciales,
por lo que solo está permitida la construcción de éste para uso personal.
REQUERIMIENTOS
Este programa necesita WorkBench 2.04 (o sea, versión 37) o superior para
funcionar. Además en LIBS: tiene que estar la asl.library, que viene con el
sistema operativo, para el requester de ficheros.
Es imprescindible tener un interface MIDI para conectar el equipo MIDI que
quieras usar con el Amiga. En caso de que no tengas interface MIDI mira el
esquema que se incluye con el programa para construirte un interface sencillo.
INTRODUCCION
Este programa se llama MIDI Packet Master (MPMaster para abreviar) y sirve
para transferir samples entre el Amiga y un dispositivo MIDI (originalmente
programado para usarlo con un sintetizador Yamaha SY85) que admita el uso de
samples. Lo que hace es realizar la transferencia según el standard MIDI de
transmisión de samples, de forma que cualquier aparato que soporte dicho
standard podrá transmitir/recibir samples hacia/desde el Amiga utilizando el
programa. Por lo que yo sé ninguno de los programas comerciales MIDI que
conozco soporta este tipo de transferencia.
STANDARD MIDI
El standard MIDI de transferencia de samples (llamado también Sample Dump
Standard) divide el sample en packets (paquetes) de pequeño tamaño (127 bytes),
enviando los packets de forma consecutiva via interface MIDI. Esto ralentiza la
transmisión, ya que de cada packet solo 120 bytes son de datos reales y el
resto (7 bytes) son de control, pero permite que la corrección de errores sea
mucho más rápida, ya que si la transferencia falla en algún momento se puede
solicitar a la fuente de datos que repita el packet incorrecto, y posteriores,
en vez de tener que reanudar la transferencia desde el principio.
Las características del standard son:
- Tamaño máximo del sample: 2 millones de unidades de sampleado
- Resolución del sample: 8, 12 o 16 bits
- Los samples se pueden transferir por el canal que se desee (1 a 16)
- Transmisión del margen del sample utilizado para la repetición (loop)
- Tipo de repetición definible (ninguna,normal o alternada)
- Control del centrado del sample en el teclado (periodo)
Respecto al periodo, no he podido saber como se calcula por que en manual
del SY85 no da ninguna información sobre este parámetro. Si dispones de
alguna información a este respecto mándamela, por favor, para que pueda
completar la implementación del standard en el programa.
Luego viene lo del inicio y final de repetición (loop). Aqui parece que hay
algo extraño en cuanto a los valores que puede tomar. Cuando la repetición se
hace con todo el sample (un bucle de repetición muy corriente) el inicio de
loop toma el valor 0, pero el final de loop toma como valor el tamaño del
sample, cuando en teoria debería ser el tamaño del sample MENOS 1. Esto se ve
claramente en un sample de tamaño 5 (por ejemplo), donde el inicio de loop toma
el valor 0 y el fin de loop el valor 5. Según esto resulta que el loop es mas
largo que el propio sample, ya que tenemos las posiciones de sample 0, 1, 2, 3,
4 y 5, que es donde termina el loop, o sea, 6 posiciones en total. Esto lo he
comprobado en varios samples que venian con el SY85. Tras hacer varias pruebas
con samples transmitidos desde el Amiga al SY85 he podido comprobar que el
final de loop no debe salir fuera del sample, ya que así se producen ruidos al
leer posiciones de memoria que no corresponden a las ocupadas por el sample.
Por esto el programa limita el loop a los valores que deberian ser correctos
(0 y longitud-1), con lo que el loop funciona perfectamente.
El formato tiene limitaciones, sobre todo cuando lo comparamos con formatos
de tipo flexible, como el IFF, pero tiene la ventaja de ser un standard común a
varias máquinas, además, es lo único que hay...
Consulta el manual de tu equipo para más detalles sobre este formato MIDI,
si es que está preparado para soportarlo. Si no lo está, este programa no te
sirve de nada en absoluto (lo siento...).
En el caso de que tengas información sobre este standard te agradeceria
mucho que me enviases fotocopias para poder mejorar la implementación del
standard en el programa.
EL STANDARD EN EL PROGRAMA
El programa puede transmitir/recibir samples via MIDI usando el formato
standard de packets. Las características son:
Recepción:
- Canal de recepción seleccionable (1-16)
- Acepta cualquier resolución entre 8 y 21 bits.
- Al grabar el sample a disco se convierte siempre a RAW de 8 bits.
- Muestra todas las características del sample que se está recibiendo.
- Detección de errores de recepción, aunque no soporta aún la corrección
de errores, si no que la recepción se interrumpe en caso de error.
- Posibilidad de interrumpir la recepción.
Transmisión:
- Canal de transmisión seleccionable (1-16), independiente del de recepción.
- Ajuste manual del loop (inicio, final y tipo) y del periodo.
- La transmisión es siempre de 8 bits.
- Posibilidad de interrumpir la transmisión.
Algunas de las características del programa son un poco primitivas debido a
que mis información sobre el standard MIDI de transmisión de samples parte de
la poca (muy poca..) información que se dá en el manual del SY85, y de un
montón de pruebas realizadas sobre dicho sintetizador. Además, la
implementación del standard en el SY85 no es completa, aunque funciona bastate
bién, por lo que no he podido experimentar con todas las posibilidades del
standard.
Por otro lado el programa solo admite grabar samples en formato RAW de 8
bits pero se le ha añadido la posibilidad de cargarlos en RAW o en IFF para
poder aprovechar los datos de loop que se incluyen en el formato IFF. Por otro
lado me gustaria añadir la grabación en IFF pero para ello necesito un poco
más de información sobre el formato 8SVX y sobre la IFFParse.library del
sistema operativo.
ARRANQUE DEL PROGRAMA
El programa está pensado para arrancar desde WorkBench ya que las opciones
se leen del icono del programa, por lo que no recomiendo arrancarlo desde el
SHELL.
Al arrancar, el programa aloja el port serie a través del sistema operativo,
para evitar así posibles conflictos con otros programas que intenten acceder
también al port serie. Además, mientras el programa esté en marcha nadie más
podrá usarlo. En caso de que alguien esté usando el port serie en el momento de
arrancar el programa, éste comunicará que le ha sido imposible conseguir el
port serie y no arrancará. También dará el nombre que ha entregado el programa
que ocupa el port serie. También se usa el audio.device para reproducir el
sample de forma legal.
Cuidado con los programas que acceden al port serie a lo bestia, sin pedirlo
al sistema operativo, ya que se podría producir un conflicto serio, sobre todo
durante la transmisión, y el sintetizador podria ponerse histérico. Un ejemplo
de ésto es el secuenciador Dr T's KCS, que accede al port serie sin mirar antes
si ya hay alguien utilizándolo (enhorabuena al programador...). En caso de usar
el Dr T's KCS, procura que no estén nunca en marcha al mismo tiempo el MPMaster
y el secuenciador. Por otro lado, este es el único caso de este tipo que me he
encontrado, ya que incluso el Protracker 2.3 aloja de forma 'legal' el port
serie para leer la entrada MIDI.
Si hay algún problema al arrancar el programa, éste lo comunicará con un
requester y volverá al sistema operativo.
Las ToolTypes que se pueden meter en el icono son:
WB_REQUESTER Con esto le indicamos al programa que queremos que
abra el requester de ficheros en la pantalla del
WorkBench, en lugar de la del propio programa.
PATTERN= Le indicamos el pattern (plantilla) para el
requester. Consulta el manual del ordenador sobre
el uso de plantillas de fichero.
DIR= Indica en que directorio queremos que se abra
inicialmente el requester de grabar/cargar sample.
Esto es util para dirigirlo al directorio del
disco duro donde guardas normalmente los samples,
y no tener que meter cada vez el path.
FREC= Fija la frecuencia por defecto para samples RAW.
MAXFREC= Fija la frecuencia de reproducción máxima que se
puede utilizar. En los chips OCS/ECS el máximo es
de 28867 Hz pero prefiero que se pueda cambiar por
si salen modelos que admitan mayores frecuencias
(creo que los modelos AGA admiten mayores
frecuencias pero no he podido comprobarlo).
La opción de abrir el requester de ficheros en el WorkBench es de utilidad
solo cuando dispones de un requester que además es una AppWindow, o sea, que se
le pueden tirar iconos dentro. Por ejemplo, el requester de ficheros de la
reqtools.library, o el de la asl.library del WorkBench 3.0. En caso de que uses
la versión 2.04 del sistema operativo, el requester no es AppWindow, pero
puedes utilizar un parche para substituir el requester de la asl.library por el
de la reqtools.library, que es muchísimo mejor.
PANTALLA DEL PROGRAMA
La pantalla del programa está dividida en 4 zonas:
TRANSMISION: Desde aqui controlamos la transmisión y todos los parámetros
que se le entregarán al equipo MIDI. Los gadgets son:
Selec.- Abre el requester de ficheros para que puedas seleccionar el
sample que quieres transmitir. Debe ser un sample RAW o IFF de 8 bits.
Una vez seleccionado el sample, los gadgets se pondrán en el valor
adecuado, mostrando así la longitud del sample, el numero de packets
que ocupa, y fijando el 'Loop start' y el 'Loop end' a valores
adecuados.
Frecuencia.- Controla la frecuencia de reproducción del sample al pulsar
sobre el gadget 'Play'.
Waveform.- Esto deberia fijar el numero de sample que se le asigna dentro
del sintetizador al sample que transmitimos. La función de este
parámetro depende del sintetizador. En el caso del SY85, este valor
fija en que WAVEFORM se meterá el sample, ya que cada WAVEFORM puede
contener varios samples y se pueden asignar después a diferentes partes
del teclado.
Loop start, Loop end, Tipo loop.- Estos son los parámetros que definen el
loop (repetición), o sea, margen de repetición y tipo (off, normal o
alternada).
Transmitir.- Transmite el sample actualmente seleccionado. Se puede
interrumpir con el gadget STOP!!. En el momento de transmitir el sample
el programa no lo carga en memoria completo si no que va cargando la
porción que necesita transmitir en cada momento. Esto significa que la
memoria disponible no limita el tamaño máximo del sample que se puede
transmitir, si no que el límite lo fija el standard (2 Megas). Durante
la transmisión se puede ver en la ventana de transmisión el numero de
packets que quedan por enviar.
X.- Limpia la zona de transmisión como si no hubiesemos seleccionado
sample. Es puramente estética, ya que el seleccionar un sample no se
carga en memoria, ni se abre el fichero, simplemente guarda el nombre
para usarlo al pulsar el gadget 'Transmitir'.
RECEPCION: Aqui podemos ver las características del sample que estamos
recibiendo, o que ya hemos recibido. Hay 3 gadgets tipo botón:
Recibir.- El programa se queda esperando que se le transmita un sample
desde el exterior. Se puede interrumpir con el gadget STOP!!. El sample
se recibirá en memoria de un golpe, acumulando todos los packets para
su conversión en el momento de grabar el sample.
Salvar sample.- Si hay un sample en memoria (recibido) se abrirá el
requester de ficheros para que introduzcas el nombre con el que quieres
salvar el sample, y en que directorio. Se salvará en formato RAW de 8
bits.
X.- Si hay un sample en memoria, lo borra de ésta y devuelve la memoria
utilizada para el sample al sistema operativo.
CANALES: controla los canales que se usan para entrada/salida. Para salida
se puede especificar cualquiera de los canales del 1 al 16. Para entrada se
puede seleccionar un canal del 1 al 16 o el modo OMNI, o sea, leer todos
los canales.
ZONA INFERIOR: es la zona de mensajes, y de reproducción de samples.
Durante la transmisión/recepción se activa el gadget STOP!! y se desactivan
todos los demás gadgets de la pantalla menos los dos gadgets de selección de
canales, ya que en la versión 2.04 del sistema no se pueden desactivar este
tipo de gadgets (en la versión 3.0 creo que si se puede). De todas formas,
aunque durante la transmisión/recepción modifiques la selección de canales, al
terminar la transferencia el programa pondrá la selección de canales como
estaba antes de empezarla.
MENUS Y TECLADO
Todos los gadgets que tienen una letra subrayada significa que pulsando la
tecla correspondiente a esa letra es como si pulsáramos el gadget, sin
necesidad de tocar el ratón para nada. Además, la tecla SPACE equivale a pulsar
el gadget STOP!!, o sea que interrumpe la transmisión/recepción en curso.
También tenemos la tecla HELP, que mostrará el requester de 'Acerca de...', la
tecla ESCAPE, con la que salimos del programa, y la tecla TAB, que selecciona
el primer gadget numérico de la pantalla para poder modificarlo sin tener que
seleccionarlo con el ratón. Mientras estás modificando un gadget numérico
puedes pulsar TAB para pasar al siguiente gadget numérico, o Shift+TAB para
pasar al anterior. En este punto hay un problema, y es que cuando entras un
valor en el gadget 'Loop start' (o 'Loop end') y el programa tiene que corregir
el otro valor del loop, el corregir dicho gadget lo desactiva, por lo que
tendrás que seleccionar el gadget (o pulsar TAB) para poder modificarlo. Parece
que esto es una interferencia que se hace el sistema operativo a si mismo.
Ignoro si en versiones posteriores del sistema (2.1 y 3.0) esto sigue así. Para
comprobar esto selecciona el gadget 'Loop start', entra un valor mayor que el
que está en 'Loop end' y pulsa TAB, verás lo que pasa.
Por otro lado está el menú del programa, aunque todo lo que está en el menú
se puede hacer desde teclado o pulsando los gadgets adecuados. Esta ahí por si
se quisiera usar el programa sin el teclado, ya que las opciones 'Acerca de...'
y 'Quitar' no tienen gadget asociado en la pantalla.
CUESTIONES TECNICAS (Apología del ensamblador...)
Este programa ha sido escrito INTEGRAMENTE en ensamblador con código
'legal', o sea, siguiendo las normas del sistema operativo. Es muy estable, ya
que no se ha colgado nunca en operación normal, y permite multitarea completa,
sin problemas de velocidad ni siquiera en un Amiga 500 normal. Lo he probado en
un Amiga 4000/030 y no ha dado ningún problema, ni con el procesador ni con el
sistema operativo 3.0.
Programado sobre un Amiga 500 Plus con 2 Megas de RAM, 3 disqueteras
y el ensamblador Devpac 3.02. Este es el segundo programa completo que hago
en ensamblador, y el primero que utiliza el sistema operativo, y es mucho más
facil de lo que parece.
Programa realizado inicialmente para transferir samples entre un Amiga 500 y
un sintetizador Yamaha SY85. Primero intenté utilizar la MIDI.library de
dominio público, pero es tan extremadamente lenta que el ordenador quedaba
literalmente 'congelado' mientras recibia los datos del sample. Con el MPMaster
la multitarea es total, con lo que puedes tener varios programas en marcha sin
problemas. El programa está realizado de manera que sea casi imposible que haya
problemas por falta de velocidad en entornos multitarea muy cargados. Durante
una transmisión, por ejemplo, el programa solo ocupa un 15% del tiempo total de
procesador en mi Amiga 500 Plus. Durante la recepción, por otro lado, ocupa un
3% del tiempo de procesador en un Amiga 500 normal. En los dos casos el
ordenador tiene conectada memoria FAST externa (1 Mega y 4 Megas
respectivamente). Solo pueden surgir problemas durante la recepción con
programas que desactivan las interrupciones del port serie (acción 'ilegal') ya
que entonces el ordenador no puede recoger los datos suficientemente rápido.
Este problema se presenta solo en ocasiones excepcionales.
MEJORAS A REALIZAR
Lista de mejoras que quiero realizar:
- Poder transmitir y recibir al mismo tiempo.
- Añadir puerto AREXX al programa de forma que se pueda controlar desde
otra aplicación, o que se puedan controlar otros programas desde el
MPMaster.
- Poder cambiar la velocidad de puerto serie por si en algún momento sale
el esperadísimo standard MIDI de alta velocidad.
- Poder asociar un nombre a cada uno de los canales de entrada, y salida,
para facilitar la selección de canales en un entorno con varios equipos
MIDI.
- Soporte para la powerpacker.library, y poder comprimir y descomprimir
asi los samples.
- Alojar el hardware serie solo en el momento de realizar la transmisión/
recepción, permitiendo así a otros programas en multitarea acceder al
MIDI sin tener que quitar el MPMaster.
- Soporte para samples IFF y otros formatos (de 8 o más bits).
- Grabar iconos, junto con los samples, conteniendo la información
recibida del equipo MIDI sobre loop, periodo, etc...
- Incluir help interactivo (si hay alguien que le parezca dificil usar el
programa).
- Requesters de ficheros separados para cargar y grabar, guardando así
por separado el último path y nombre usados para cargar y grabar.
- Poder usar desde SHELL el programa para mandar listas de samples en
bloque mediande un script o especificando varios ficheros.
- Uso opcional de los mensajes de corrección de errores MIDI.
- Edición gráfica del loop.
- Soporte multilengua mediante la locale.library.
De todas formas no estoy seguro de cuando podré realizar estas mejoras, o si
las realizaré alguna vez, ya que dependen mucho de la información que pueda
conseguir sobre formatos, sistema operativo, etc..., y de las ganas que tenga
de mejorar el programa, ya que yo no lo utilizo por que no soy músico ni tengo
sintetizador. De todas formas animo al que le interese que se mejore el
programa que me escriba para comunicarme sus ideas y sugerencias sobre el
programa.
AGRADECIMIENTOS
Mis más sinceros agradecimientos:
- a Fco Javier Cocaña Galán, Leonardo Cocaña Galán y Juan A. Estela Valín
por su amistad, y por sus constantes sugerencias (y feroces críticas).
- a Commodore-Amiga Inc por crear el mejor ordenador del mundo.
- a Motorola por sus excelentes microprocesadores, fáciles de programar y
extremadamente flexibles.
- a Nico François por crear la fantástica reqtools.library.
- a IBM y Atari por crear unos ordenadores tan malos y facilitar así mi
elección por el Amiga (muchiiisimas gracias).
PARA CONTACTAR
Te agradeceria que me enviases toda información que me pueda ser útil para
ampliar la potencia del programa, como por ejemplo, información sobre otros
formatos de fichero de samples (de 8 o más bits), sobre la implementación del
standard MIDI de samples sobre otros equipos MIDI que no sean el Yamaha SY85, o
simplemente para saber yo con que equipos funciona bién el programa.
Para enviar sugerencias, informar de errores, intercambiar información, etc,
contacta conmigo en esta dirección:
Antonio J. Pomar Rosselló
C/ Alférez Cerdá nº 13-bajos
Palma de Mallorca 07014
Baleares (España)
Palma de Mallorca 22-Noviembre-1993